import java.util.Scanner;

// 矩阵相加 C = A + B
public class Main {
    public static Scanner scan = new Scanner(System.in);

    public static void main(String[] args) {
        // 输入矩阵的行数和列数
        int m = scan.nextInt(); // 矩阵的行
        int n = scan.nextInt(); // 矩阵的列

        // 创建二维数组 a 和 b，分别存储矩阵 A 和 B 的数据
        int[][] a = new int[m][n];
        int[][] b = new int[m][n];

        // 调用方法为 a 输入数据
        inputData(a);

        // 调用方法为 b 输入数据
        inputData(b);

        // 调用方法求 a + b
        int[][] c = addMatrix(a, b);

        // 输出结果
        showResult(c);
    }

    // 方法：输入二维数组的数据
    public static void inputData(int[][] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arr[i][j] = scan.nextInt();
            }
        }
    }

    // 方法：矩阵相加
    public static int[][] addMatrix(int[][] arr1, int[][] arr2) {
        int[][] c = new int[arr1.length][arr1[0].length];
        for (int i = 0; i < arr1.length; i++) {
            for (int j = 0; j < arr1[i].length; j++) {
                c[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        return c;
    }

    // 方法：输出二维数组的结果
    public static void showResult(int[][] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(" " + arr[i][j]); // 每个元素前有一个空格
            }
            System.out.println(); // 换行
        }
    }
}